/*
 * 当使用new的时候，实例化一个具体类，应该知道这时，正在对实现编程，而背离对接口编程的设计原则
 * 简单工厂其实不是一个设计模式，反而比较像一种编程习惯，不要误认为它是“工厂模式”（Factory Pattern）
 * 简单工厂可以将实例化具体类的代码从应用中抽离，加以封装。
 */

package headfirst.factorty;

import java.util.HashMap;

public class HFSimpleFactory 
{
	public static void main(String[] args)
	{
		System.out.println("in HFSimpleFactory");
		
		HashMap<String, String> addinfo = new HashMap<String, String>();
		addinfo.put("id", "123456");
		addinfo.put("cat", "1");
		addinfo.put("city", "1");
		addinfo.put("title", "test");
		addinfo.put("content", "test");
		
		HashMap<String, String> editinfo = new HashMap<String, String>();
		editinfo.put("cat", "2");
		editinfo.put("city", "2");
		editinfo.put("title", "test2");
		editinfo.put("content", "test2");
		
		HashMap<String, String> scond = new HashMap<String, String>();
		scond.put("cat", "1");
		
		InfSearchTool stool;
		stool = HFSimpleFactory.createSearchTool("postgres");
		if(null != stool)
		{
			stool.doAddRow(addinfo);
			stool.doDelRow("123456");
			stool.doEdit("123456", editinfo);
			stool.doSearch(scond);
		}
	}
		
	public static InfSearchTool createSearchTool(String stname)
	{
		if(stname.equalsIgnoreCase("mysql"))
		{
			return new MysqlSearchTool();
		}
		if(stname.equalsIgnoreCase("postgres"))
		{
			return new PostgresSearchTool();
		}
		if(stname.equalsIgnoreCase("isearch"))
		{
			return new IsearchSearchTool();
		}	
		return null;
	}
}
